

<?php
/**
 * Created by PhpStorm.
 * User: merlin
 * Date: 15-11-19
 * Time: 下午5:35
 */

    /*
     *  Google翻译PHP接口
     * 官成文 2009-03-28
     * http://blog.csdn.net/aprin/
     * 注意：如果翻译文本为UTF-8编码，则要删去mb_convert_encoding函数
     */

class Google_API_translator {
    public $url = "http://translate.google.com/translate_t";
    public $text = "";//翻译文本
    public $out = ""; //翻译输出

    function setText($text){
        $this->text = $text;
    }

    function translate() {
        $this->out = "";

        $gphtml = $this->postPage($this->url, $this->text);

        //提取翻译结果
        $out = substr($gphtml, strpos($gphtml, "<div id=result_box dir=\"ltr\">"));
            $out = substr($out, 29);
            $out = substr($out, 0, strpos($out, "</div>"));

            $this->out = $out;
            return $this->out;
        }

    function postPage($url, $text) {
        $html ='';

        if($url != "" && $text != "") {
            $ch = curl_init($url);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
            curl_setopt($ch, CURLOPT_HEADER, 1);
            curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
            curl_setopt($ch, CURLOPT_TIMEOUT, 15);

            /*
             *hl - 界面语言，此处无用。
             *langpair - src lang to dest lang
             *ie - urlencode的编码方式?
             *text - 要翻译的文本
             */
            $fields = array('hl=zh-CN', 'langpair=zh-CN|en', 'ie=UTF-8','text='.urlencode(mb_convert_encoding($text, 'UTF-8', 'GB2312')));
            curl_setopt($ch, CURLOPT_POST, 1);
            curl_setopt($ch, CURLOPT_POSTFIELDS, implode('&', $fields));

            $html = curl_exec($ch);
            if(curl_errno($ch)) $html = "";
            curl_close ($ch);
        }
        return $html;
    }
}

//just for test
$g = new Google_API_translator();
$g->setText("测试！");
$g->translate();
echo $g->out;


?>